
def count():
    fs = []
    for i in range(1, 4):
        def f():
             return i*i
        fs.append(f)
    return fs

# Python 的 for 循环没有独立作用域，循环中定义的变量在循环结束后仍然可以被访问。
# 返回闭包时牢记一点：返回函数不要引用任何循环变量，或者后续会发生变化的变量
f1, f2, f3 = count()
print(f1())
print(f2())
print(f3())

def count():
    def f(j):
        def g():
            return j*j
        return g
    fs = []
    for i in range(1, 4):
        fs.append(f(i)) # f(i)立刻被执行，因此i的当前值被传入f()
    return fs
f1, f2, f3 = count()
print(f1())
print(f2())
print(f3())